在介紹list列表之前,先介紹一下在Python的數據類型可以分為兩種:
可變/不可變物件 (Mutable/Immutable)
list/ dict/ set
number/ string/ tuple
可變物件:該物件所指向記憶體中的值可以被改變
不可變物件:該物件所指向記憶體中的值不可以被改變,所以當變數指向的值改變時,等於將原來的值複製一份後存於一個新的地址,變數再指向這個新的地址
list在python中屬於可變(mutable)物件,即物件所指向記憶體中的值可以被改變
舉例來說:
我們先令list1這個變數等於[1,2,3,4,5,6,7,8,9],這時候會在記憶體中生成一個list物件,而list1這個變數名稱會指向記憶體中list物件的位址,我們可以用id()這個內建函式查看物件id(類似於記憶體位址)
list1 = [1,2,3,4,5,6,7,8,9]
print(id(list1))
當我們對這個list1做操作之後,再看看物件id有沒有變更
list1.append(10)
print(list1)
print(id(list1))
我們發現前後的id一模一樣,代表身為可變物件的list可以直接改變記憶體位置中的值,對於list可變的性質之後還會有更詳細的介紹
列表為python中最基本的數據結構之一,語法為用中括號[]及逗點,生成數據如下
list1 = [1,2,3]
list2 = ['a','b','c']
list3 = [1,2,3,'a','b','c']
list運算與操作
操作 | 描述 |
---|---|
[1,2,3]+[4,5,6] | 組合 |
[1,2,3]*3 | 重複 |
len([1,2,3]) | 列表長度 |
3 in [1,2,3] | 判斷列表內是否有該元素 |
迭代
list可以直接拿來進for迴圈中迭代,如下:
for i in [1,2,3]:
print(i)
Index and slice [開始:結束:step]
列表屬於序列的一種,在python中序列形式的數據結構可以用index索引存取列表內每個元素的值進行列表的操作
#%% Index and slice
a = [1,2,3,4,5,6,7,8,9]
print(a[1:5]) #[2, 3, 4, 5]
print(a[1:7:2]) #[2, 4, 6]
print(a[1::2]) #[2, 4, 6, 8]
print(a[:7:2]) #[1, 3, 5, 7]
print(a[::2]) #[1, 3, 5, 7, 9]
List method
下列為list類別內建的方法
list.append(x)
往後增加元素list.extend(iterable)
列表擴充list.insert(i, x)
插入元素list.remove(x)
移除列表中第一個值等於x的元素list.pop([i])
移除並回傳指定index位置的元素,若沒有指定,則移除並回傳最後一個元素list.index(x[, start[, end]])
回傳列表中第一個元素值於x的索引位置,可選填範圍(x, start, end)list.sort(key=None, reverse=False)
將列表排序,可選擇代入key為帶有一個參數的函式#%% list function
list1 = []
print("Origin: ", list1)
list1.append(1)
list1.append(2)
print("append: ", list1)
list1.insert(1, 1.5)
list1.insert(0, 0)
print("insert: ", list1)
list2 = [4,5,6]
list1.extend(list2)
list1.extend([1.5,1.5,1.5])
print("extend: ", list1)
list1.remove(1.5)
list1.remove(1.5)
print("remove: ", list1)
list1.pop()
list1.pop(1)
print("pop: ", list1)
print("index: ", list1.index(4))
list1.sort(reverse = True)
print("sort: ", list1)
刪除列表元素
a = [-1, 1, 66.25, 333, 333, 1234.5]
del a[0]
a
del a[2:4]
a
del a[:]
a
物件id
https://docs.python.org/3/library/functions.html#id
關於list內建方法的用法,詳情請參照:
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists